import tkinter as tk

# 开始
def send():
    txt = entry.get().split(' ')
    # 转成整数
    arr = [int(item) for item in txt]
    # 使用基数排序
    sort_arr = radix(arr)
    # 显示排序结果
    result_label.config(text=str(sort_arr))

# 基数排序
def radix(arr):
    # 返回数组的长度
    ls = len(arr)
    # 如果数组长度小于2，直接返回
    if ls < 2:
        return
    # 用于分组的数组
    bucket = []
    # 字符串长度最大值
    max = 1
    for k in arr:
        # 如果有小数点，需要先分别计算出小数点左右两端的字符串长度，然后再用两边各自的最大值之和作为字符串最长值
        print(arr[k])
        return
        ls = len(arr[k])
        if ls > max:
            max = ls
    # 初始化分组，十进制就有10个分组
    for i in range(10):
        bucket.append([])
    # 循环最长字符串
    for i in range(max):
        # 内循剩余数组
        for j in range(ls):
            str = str(arr[j])
            if len(str) >= i + 1:
                # 依次按照基数分组：当前字符串的长度减去伦次再减1即为当前索引
                k = int(str[ls-i-1])
                bucket[k].append(arr[j])
            else:
                # 其余全部默认为 0
                bucket[0].append(arr[j])
        # 清空旧的数组
        arr = []
        # 装入拼接后的数组
        for i in range(10):
            t = len(bucket[i])
            for j in range(t):
                arr.append(bucket[i][j])
            bucket[i] = []
    return arr

# 创建主窗口
root = tk.Tk()
root.title("基数排序")
root.geometry("400x200")

# 创建输入框
entry = tk.Entry(root)
entry.insert(0,'1 3 2 5 61 17 9')
entry.pack()

# 创建排序按钮
tk.Button(root, text="基数排序", command=send).pack()

# 创建结果标签
result_label = tk.Label(root, text="")
result_label.pack()

# 运行主循环
root.mainloop()